FlexRay is a communication protocol for use in automotive applications. It specifies a scalable, high-speed (up to 10 Mbit/s), deterministic and fault-tolerant communication system in which nodes (or “electronic control units”) can exchange data over a serial bus network via two independent communication channels.
Each FlexRay node includes a communication controller and a physical interface converter. The communication controller handles the interface with a host (in the form of a central processing unit which executes application software) and carries out serial data stream format conversion. The physical interface converter adapts the serial data stream to the requirements of the physical link.
The communication controller includes two main data paths, namely a transmit path and a receive path. The transmit path provides functions for encoding data provided by the host and passing the encoded data to the physical interface converter for transmission. The receive path provides functions for decoding data received by physical interface converter and passing the decoded data to the host.
Safety-related applications require checks be carried out to ensure that all the parts of the node, including the interface to the serial bus, are operating correctly. These checks can be performed during power-on, i.e. before normal operation of the node begins, or during normal operation. Performing checks before normal operation begins is referred to herein as “power-on checking” and performing checks during normal operation is referred to herein as “monitoring”.
Power-on checking seeks to test maximum functional coverage (i.e. to test the widest range of functions) based on test conditions which are as close as possible to those conditions found during normal operation. Such checks should ideally be invisible to other nodes, i.e. the checks preferably should not result in the node transmitting data to other nodes.
A loop-back function can be used for power-on checking of a serial interface. Ideally, data generated in the transmit path of a communication controller should be routed inside the node to the receive path of the same communication controller. In this situation, transmit and receive paths are referred to as “data source” and “data sink” respectively. However, the use of loop-back function in FlexRay is limited.
FlexRay is a half-duplex communication protocol. Thus, existing FlexRay communication controllers cannot pass data to the physical interface converter on one channel and receive the data from the physical interface converter on the same channel. Therefore, loop-back for power-on checking via the physical layer converter cannot be implemented by simply connecting transmit and receive paths.
Notwithstanding this, it is possible to provide special loop-back logic inside the communication controller and thus provide a degree of loop-back. However, the extent of the path checked by the loop-back function is limited. For example, loop-back does not cover part of the communication controller and does not cover the connection to the physical interface converter.
As mentioned earlier, FlexRay allows nodes to exchange data over two communication channels. However, a FlexRay communication controller cannot transmit data on one channel and extract the data on the other channel.
One way to provide loop-back functionality is to provide a second communication controller. However, this arrangement still falls short of maximum functional coverage since a different controller is used during power-on checking to the one used during normal operation.
A second communication controller can also be used for monitoring. However, the second communication controller should be carefully configured to ensure not only that it is invisible to other nodes (i.e. it should not transmit data), but also should not detrimentally affect normal functioning of the first communication controller.